#include "StdAfx.h"
#include "coverdataforshow.h"

CCoverDataForShow::CCoverDataForShow(void)
{
}

CCoverDataForShow::~CCoverDataForShow(void)
{
}

void CCoverDataForShow::Cove16toShowData(short* pdata, BYTE* pResult, int size)
{
	short* temp=pdata;
	short max=temp[0];
	short min=temp[0];

	for(int i=0;i<size;i++)
	{
		if(temp[i]<min) min=temp[i];
		if(temp[i]>max) max=temp[i];
	}
	if(max!=min)
	{	
		double step=256.0/(double)(max-min);
		for(int i=0;i<size;i++)
		{
			double tt;
			tt=(temp[i]-min)*step;
			tt=(double)floor(tt);
			if(tt<0) tt=0;
			if(tt>255) tt=255;
			pResult[i]=(BYTE)tt;
		}
	}
	else
	{
		for(int i=0;i<size;i++)
		{
			double tt=temp[i];
			tt=(double)floor(tt);
			if(tt<0) tt=0;
			if(tt>255) tt=255;
			pResult[i]=(BYTE)tt;
		}

	}
}

void CCoverDataForShow::CoveFloattoShowData(float* pdata, BYTE* pResult, int size)
{
	float* temp=pdata;
	float max=temp[0];
	float min=temp[0];

	for(int i=0;i<size;i++)
	{
		if(temp[i]<min) min=temp[i];
		if(temp[i]>max) max=temp[i];
	}
	if(max!=min)
	{	
		float step=256/(max-min);
		for(int i=0;i<size;i++)
		{
			float tt=temp[i];
			tt=(tt-min)*step;
			tt=(float)floor(tt);
			if(tt<0) tt=0;
			if(tt>255) tt=255;
			pResult[i]=(BYTE)tt;
		}
	}
	else
	{
		for(int i=0;i<size;i++)
		{
			float tt=temp[i];
			tt=(float)floor(tt);
			if(tt<0) tt=0;
			if(tt>255) tt=255;
			pResult[i]=(BYTE)tt;
		}

	}
}